// FEAT3: Finite Element Analysis Toolbox, Version 3
// Copyright (C) 2010 - 2020 by Stefan Turek & the FEAT group
// FEAT3 is released under the GNU General Public License version 3,
// see the file 'copyright.txt' in the top level directory for details.

#pragma once
#ifndef KERNEL_MESHOPT_RUMPF_FUNCTIONALS_3D_P1_UNROLLED_HPP
#define KERNEL_MESHOPT_RUMPF_FUNCTIONALS_3D_P1_UNROLLED_HPP 1

#include <kernel/base_header.hpp>
#include <kernel/shape.hpp>
#include <kernel/meshopt/base.hpp>
#include <kernel/meshopt/rumpf_functional.hpp>

namespace FEAT
{
  namespace Meshopt
  {
    /// \cond internal

    /**
     * \brief Class template for Rumpf functionals, standard trafo on conformal Simplex<3> meshes.
     *
     * This is the variant where the local functional's contributions are computed directly with Maple-generated
     * code, which means there is excessive manual loop unrolling.
     */
    template<typename DataType_>
    class RumpfFunctionalUnrolled<DataType_,
    Trafo::Standard::Mapping<Geometry::ConformalMesh<Shape::Simplex<3>, 3, DataType_>>> :
      public RumpfFunctionalBase<DataType_>
      {
        public:
          /// Our baseclass
          typedef RumpfFunctionalBase<DataType_> BaseClass;

          /// Our data type
          typedef DataType_ DataType;
          /// Shape type of the underlying transformation
          typedef Shape::Simplex<3> ShapeType;
          /// The transformation this functional works on
          typedef Trafo::Standard::Mapping<Geometry::ConformalMesh<ShapeType, 3, DataType_>> TrafoType;
          /// Our world dimension
          static constexpr int world_dim = TrafoType::world_dim;
          /// Our shape dimension
          static constexpr int shape_dim = ShapeType::dimension;
          /// The FE space associated with the transformation
          typedef typename Intern::TrafoFE<TrafoType>::Space TrafoSpace;

          /// Type for a pack of local vertex coordinates
          typedef Tiny::Matrix<DataType_, Shape::FaceTraits<ShapeType,0>::count, world_dim> Tx;
          /// Type for the gradient of the local cell sizes
          typedef Tiny::Vector<DataType_, Shape::FaceTraits<ShapeType,0>::count*world_dim> Tgradh;

          /// Type for the gradient of the local reference mapping
          typedef Tiny::Matrix<DataType_, shape_dim, world_dim> TgradR;

          /// Type for evaluating the transformation
          typedef typename TrafoType::template Evaluator<ShapeType, DataType>::Type TrafoEvaluator;
          /// Type for evaluating the FE functions
          typedef typename TrafoSpace::template Evaluator<TrafoEvaluator>::Type SpaceEvaluator;

        private:
          /// Exponent for the det based terms
          const int _exponent_det;
          /// Do we need to compute \f$ \| \nabla R_K \|_F \f$?
          const bool _compute_frobenius;
          /// Do we need to compute \f$ \| \mathrm{Cof}(\nabla R_K) \|_F \f$?
          const bool _compute_cof;
          /// Do we need to compute \f$ det(\nabla R_K) \f$?
          const bool _compute_det;

        public:
          /**
           * \brief Constructor
           */
          explicit RumpfFunctionalUnrolled(
            const DataType fac_frobenius_,
            const DataType fac_det_,
            const DataType fac_cof_,
            const DataType fac_reg_,
            const int exponent_det_) :
            BaseClass( fac_frobenius_,
            fac_det_,
            fac_det_*(Math::sqrt( Math::sqr(fac_reg_) + DataType(1) )*Math::pow( DataType(1) + Math::sqrt(Math::sqr(fac_reg_) + DataType(1)), DataType(exponent_det_))),
            fac_cof_,
            fac_reg_),
            _exponent_det(exponent_det_),
            _compute_frobenius( (fac_frobenius_ > DataType(0)) ),
            _compute_cof( (fac_cof_ > 0) ),
            _compute_det( (fac_det_ > 0) )
            {
              XASSERTM(exponent_det_ == 1 || exponent_det_ == 2,"exponent_det must be 1 or 2!");
            }

          /**
           * \brief The class name
           *
           * \returns String with the class name
           */
          static String name()
          {
            return "RumpfFunctionalUnrolled<"+ShapeType::name()+">";
          }

          /**
           * \brief Prints object parameters
           */
          String info() const
          {
            const Index pad_width(30);
            return name() + ":" + BaseClass::info() + String("\nexponent_det").pad_back(pad_width, '.')
              + String(": ") + stringify(_exponent_det);
          }

          /**
           * \brief Computes the functional gradient for one cell
           */
          void eval_fval_grad(DataType& fval, Tx& grad, const TgradR& DOXY(mat_tensor), const TrafoEvaluator& DOXY(trafo_eval), const SpaceEvaluator& DOXY(space_eval), const Tx& x, const DataType& h)
          {
            fval = DataType(0);
            grad.format(DataType(0));

            DataType fval_frobenius(0);
            DataType fval_cof(0);
            DataType fval_det(0);
            DataType fval_rec_det(0);

            if(_compute_frobenius)
            {
              fval_frobenius = this->_fac_frobenius*compute_frobenius_part(x,h);
              add_grad_frobenius_part(grad, x, h);
            }

            if(_compute_cof)
            {
              fval_cof = this->_fac_cof*compute_cof_part(x,h);
              add_grad_cof_part(grad, x, h);
            }

            if(_compute_det)
            {
              if(_exponent_det == 1)
              {
                fval_det = this->_fac_det*compute_det_1_part(x,h);
                fval_rec_det = this->_fac_rec_det*compute_rec_det_1_part(x,h);
                add_grad_det_1_part(grad, x, h);
                add_grad_rec_det_1_part(grad, x, h);
              }
              else
              {
                fval_det = this->_fac_det*compute_det_2_part(x,h);
                fval_rec_det = this->_fac_rec_det*compute_rec_det_2_part(x,h);
                add_grad_det_2_part(grad, x, h);
                add_grad_rec_det_2_part(grad, x, h);
              }
            }

            fval = fval_frobenius + fval_cof + fval_det + fval_rec_det;

            //std::cout << std::scientific;
            //std::cout << std::setprecision(16);

            //Tx grad_frobenius(DataType(0));
            //Tx grad_cof(DataType(0));
            //Tx grad_cof1(DataType(0));
            //Tx grad_det(DataType(0));
            //Tx grad_rec_det(DataType(0));

            //add_grad_frobenius_part(grad_frobenius, x, h);
            //add_grad_cof_part(grad_cof, x, h);
            //add_grad_cof_part_1(grad_cof1, x, h);
            //add_grad_det_1_part(grad_det, x, h);
            //add_grad_rec_det_1_part(grad_rec_det, x, h);

            //std::cout << "grad_frobenius"<< std::endl << grad_frobenius << std::endl;
            //std::cout << "grad_cof"<< std::endl << grad_cof << std::endl;
            //std::cout << "grad_cof1"<< std::endl << grad_cof1<< std::endl;
            //std::cout << "grad_cof2"<< std::endl << grad_cof-grad_cof1<< std::endl;
            //std::cout << "grad_det"<< std::endl << grad_det << std::endl;
            //std::cout << "grad_rec_det"<< std::endl << grad_rec_det << std::endl;
            //
            //std::cout << "x = " << std::endl << x << std::endl;
            //std::cout << "h = " << std::endl << h << std::endl;
            //std::cout << "fval = " << stringify_fp_sci(fval) << ", "
            //<< stringify_fp_sci(fval_frobenius)<< ", "
            //<< stringify_fp_sci(fval_cof)<< ", "
            //<< stringify_fp_sci(fval_det) << ", "
            //<< stringify_fp_sci(fval_rec_det) << std::endl;

            //std::cout << "local grad " << std::endl << grad << std::endl;
          }

          void eval_fval_cellwise(DataType& fval, const TgradR& DOXY(mat_tensor), const TrafoEvaluator& DOXY(trafo_eval), const SpaceEvaluator& DOXY(space_eval), const Tx& x, const DataType& h, DataType& fval_frobenius, DataType& fval_cof, DataType& fval_det)
          {
            fval = DataType(0);
            fval_frobenius = DataType(0);
            fval_cof = DataType(0);
            fval_det = DataType(0);

            if(_compute_frobenius)
            {
              fval_frobenius = this->_fac_frobenius*compute_frobenius_part(x,h);
            }

            if(_compute_cof)
            {
              fval_cof = this->_fac_cof*compute_cof_part(x,h);
            }

            if(_compute_det)
            {
              if(_exponent_det == 1)
              {
                fval_det = this->_fac_det*compute_det_1_part(x,h);
                fval_det += this->_fac_rec_det*compute_rec_det_1_part(x,h);
              }
              else
              {
                fval_det = this->_fac_det*compute_det_2_part(x,h);
                fval_det += this->_fac_rec_det*compute_rec_det_2_part(x,h);
              }
            }

            fval = fval_frobenius + fval_cof + fval_det;

            //std::cout << "fval = " << stringify_fp_sci(fval) << ", "  << stringify_fp_sci(fval_frobenius)<< ", "  << stringify_fp_sci(fval_det) << ", "  << stringify_fp_sci(fval_rec_det) << std::endl;

          }

          /**
           * \brief Adds the part coming from the chain rule and the derivative wrt. h
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_h_part(Tx& grad, const TgradR& DOXY(mat_tensor), const TrafoEvaluator& DOXY(trafo_eval), const SpaceEvaluator& DOXY(space_eval), const Tx& x, const DataType& h, const Tgradh& grad_h)
#else
            void NOINLINE add_grad_h_part(Tx& grad, const TgradR& DOXY(mat_tensor), const TrafoEvaluator& DOXY(trafo_eval), const SpaceEvaluator& DOXY(space_eval), const Tx& x, const DataType& h, const Tgradh& grad_h)
#endif
            {

              DataType frobenius_der_h(0);
              DataType cof_der_h(0);
              DataType det_der_h(0);
              DataType rec_det_der_h(0);

              if(_compute_frobenius)
              {
                frobenius_der_h = this->_fac_frobenius*compute_frobenius_der_h_part(x,h);
              }

              if(_compute_cof)
              {
                cof_der_h = this->_fac_cof*compute_cof_der_h_part(x,h);
              }

              if(_compute_det)
              {
                if(_exponent_det == 1)
                {
                  det_der_h = this->_fac_det * compute_det_1_der_h_part(x,h);
                  rec_det_der_h = this->_fac_rec_det * compute_rec_det_1_der_h_part(x,h);
                }
                else
                {
                  det_der_h = this->_fac_det * compute_det_2_der_h_part(x,h);
                  rec_det_der_h = this->_fac_rec_det * compute_rec_det_2_der_h_part(x,h);
                }

              }

              DataType der_h(frobenius_der_h + cof_der_h + det_der_h + rec_det_der_h);

              //std::cout << "norm_der_h = " << stringify_fp_sci(this->_fac_frobenius*norm_der_h) << std::endl <<
              //  " det_der_h = " << stringify_fp_sci(this->_fac_det*det_der_h) << std::endl <<
              //  " rec_det_der_h = " << stringify_fp_sci(this->_fac_rec_det*rec_det_der_h) << std::endl;
              //std::cout << "full_der_h " << stringify_fp_sci(der_h) <<  std::endl;

              for(int i(0); i < Tx::m; ++i)
              {
                for(int d(0); d < Tx::n; ++d)
                {
                  grad(i,d) += der_h*grad_h(i*Tx::n + d);
                }
              }
            } // add_grad_h_part


          /**
           * \brief Computes the Frobenius norm term for one cell
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_frobenius_part(const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_frobenius_part(const Tx& x, const DataType& h)
#endif
            {
              DataType fval_frobenius_part(0);
              fval_frobenius_part = Math::pow(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)),DataType(2))/(h*h*h*h)/DataType(4);
              return fval_frobenius_part;
            }

          /**
           * \brief Computes the cofactor matrix Frobenius norm term for one cell
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_cof_part(const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_cof_part(const Tx& x, const DataType& h)
#endif
            {
              DataType fval_cof_part (0);
              fval_cof_part = Math::pow(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)),DataType(2))*Math::pow(h,-DataType(8));
              return fval_cof_part ;
            }

          /**
           * \brief Computes the det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_det_1_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_det_1_part( const Tx& x, const DataType& h)
#endif
            {
              DataType fval_det_1_part(0);
              fval_det_1_part = -Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3);
              return fval_det_1_part;
            }
          /**
           * \brief Computes the det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_det_2_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_det_2_part( const Tx& x, const DataType& h)
#endif
            {
              DataType fval_det_2_part(0);
              fval_det_2_part = DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h);
              return fval_det_2_part;
            }

          /**
           * \brief Computes the 1/det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_rec_det_1_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_rec_det_1_part( const Tx& x, const DataType& h)
#endif
            {
              DataType fval_rec_det_1_part(0);
              fval_rec_det_1_part = DataType(1)/(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)));
              return fval_rec_det_1_part;
            }

          /**
           * \brief Computes the 1/det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_rec_det_2_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_rec_det_2_part( const Tx& x, const DataType& h)
#endif
            {
              DataType fval_rec_det_2_part(0);
              fval_rec_det_2_part = Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2));
              return fval_rec_det_2_part;
            }
          /**
           * \brief Computes the Frobenius norm term for one cell
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_frobenius_der_h_part(const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_frobenius_der_h_part(const Tx& x, const DataType& h)
#endif
            {
              DataType frobenius_der_h_part(0);
              frobenius_der_h_part = DataType(6)*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h)-Math::pow(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)),DataType(2))/(h*h*h*h*h);
              return frobenius_der_h_part;
            }

          /**
           * \brief Computes the cofactor matrix Frobenius norm term for one cell
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_cof_der_h_part(const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_cof_der_h_part(const Tx& x, const DataType& h)
#endif
            {
              DataType cof_der_h_part (0);
              cof_der_h_part = DataType(24)*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))/(h*h*h*h*h)-DataType(8)*Math::pow(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)),DataType(2))*Math::pow(h,-DataType(9));
              return cof_der_h_part ;
            }

          /**
           * \brief Computes the det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_det_1_der_h_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_det_1_der_h_part( const Tx& x, const DataType& h)
#endif
            {
              DataType det_1_der_h_part(0);
              det_1_der_h_part = Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h);
              return det_1_der_h_part;
            }
          /**
           * \brief Computes the det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_det_2_der_h_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_det_2_der_h_part( const Tx& x, const DataType& h)
#endif
            {
              DataType det_2_der_h_part(0);
              det_2_der_h_part = -DataType(12)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))*Math::pow(h,-DataType(7));
              return det_2_der_h_part;
            }

          /**
           * \brief Computes the 1/det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_rec_det_1_der_h_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_rec_det_1_der_h_part( const Tx& x, const DataType& h)
#endif
            {
              DataType rec_det_1_der_h_part(0);
              rec_det_1_der_h_part = -Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h)-DataType(6)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))*Math::pow(h,-DataType(7)));
              return rec_det_1_der_h_part;
            }

          /**
           * \brief Computes the 1/det term on one element
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          DataType compute_rec_det_2_der_h_part( const Tx& x, const DataType& h)
#else
            DataType NOINLINE compute_rec_det_2_der_h_part( const Tx& x, const DataType& h)
#endif
            {
              DataType rec_det_2_der_h_part(0);
              rec_det_2_der_h_part = -DataType(2)*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h)-DataType(6)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))*Math::pow(h,-DataType(7)));
              return rec_det_2_der_h_part;
            }

          /**
           * \brief Computes the gradient of the Frobenius norm term
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_frobenius_part(Tx& grad_frobenius_part, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_frobenius_part(Tx& grad_frobenius_part, const Tx& x, const DataType& h)
#endif
            {
              grad_frobenius_part(0,0) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(-DataType(6)*x(0,0)+DataType(2)*x(1,0)+DataType(2)*x(2,0)+DataType(2)*x(3,0))/DataType(2);

              grad_frobenius_part(0,1) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(-DataType(6)*x(0,1)+DataType(2)*x(1,1)+DataType(2)*x(2,1)+DataType(2)*x(3,1))/DataType(2);

              grad_frobenius_part(0,2) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(-DataType(6)*x(0,2)+DataType(2)*x(1,2)+DataType(2)*x(2,2)+DataType(2)*x(3,2))/DataType(2);

              grad_frobenius_part(1,0) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,0)-DataType(6)*x(1,0)+DataType(2)*x(2,0)+DataType(2)*x(3,0))/DataType(2);

              grad_frobenius_part(1,1) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,1)-DataType(6)*x(1,1)+DataType(2)*x(2,1)+DataType(2)*x(3,1))/DataType(2);

              grad_frobenius_part(1,2) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,2)-DataType(6)*x(1,2)+DataType(2)*x(2,2)+DataType(2)*x(3,2))/DataType(2);

              grad_frobenius_part(2,0) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,0)+DataType(2)*x(1,0)-DataType(6)*x(2,0)+DataType(2)*x(3,0))/DataType(2);

              grad_frobenius_part(2,1) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,1)+DataType(2)*x(1,1)-DataType(6)*x(2,1)+DataType(2)*x(3,1))/DataType(2);

              grad_frobenius_part(2,2) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,2)+DataType(2)*x(1,2)-DataType(6)*x(2,2)+DataType(2)*x(3,2))/DataType(2);

              grad_frobenius_part(3,0) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,0)+DataType(2)*x(1,0)+DataType(2)*x(2,0)-DataType(6)*x(3,0))/DataType(2);

              grad_frobenius_part(3,1) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,1)+DataType(2)*x(1,1)+DataType(2)*x(2,1)-DataType(6)*x(3,1))/DataType(2);

              grad_frobenius_part(3,2) += this->_fac_frobenius*(DataType(6)*h*h-DataType(3)*Math::sqr(x(0,0))+DataType(2)*x(0,0)*x(1,0)+DataType(2)*x(0,0)*x(2,0)+DataType(2)*x(0,0)*x(3,0)-DataType(3)*Math::sqr(x(0,1))+DataType(2)*x(0,1)*x(1,1)+DataType(2)*x(0,1)*x(2,1)+DataType(2)*x(0,1)*x(3,1)-DataType(3)*Math::sqr(x(0,2))+DataType(2)*x(0,2)*x(1,2)+DataType(2)*x(0,2)*x(2,2)+DataType(2)*x(0,2)*x(3,2)-DataType(3)*Math::sqr(x(1,0))+DataType(2)*x(1,0)*x(2,0)+DataType(2)*x(1,0)*x(3,0)-DataType(3)*Math::sqr(x(1,1))+DataType(2)*x(1,1)*x(2,1)+DataType(2)*x(1,1)*x(3,1)-DataType(3)*Math::sqr(x(1,2))+DataType(2)*x(1,2)*x(2,2)+DataType(2)*x(1,2)*x(3,2)-DataType(3)*Math::sqr(x(2,0))+DataType(2)*x(2,0)*x(3,0)-DataType(3)*Math::sqr(x(2,1))+DataType(2)*x(2,1)*x(3,1)-DataType(3)*Math::sqr(x(2,2))+DataType(2)*x(2,2)*x(3,2)-DataType(3)*Math::sqr(x(3,0))-DataType(3)*Math::sqr(x(3,1))-DataType(3)*Math::sqr(x(3,2)))/(h*h*h*h)*(DataType(2)*x(0,2)+DataType(2)*x(1,2)+DataType(2)*x(2,2)-DataType(6)*x(3,2))/DataType(2);
            }

          /**
           * \brief Computes the gradient of the Frobenius norm term
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_cof_part(Tx& grad_cof_part, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_cof_part(Tx& grad_cof_part, const Tx& x, const DataType& h)
#endif
            {
              grad_cof_part(0,0) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(-DataType(4)*x(0,0)*Math::sqr(x(1,1))+DataType(4)*x(0,0)*x(1,1)*x(2,1)+DataType(4)*x(0,0)*x(1,1)*x(3,1)-DataType(4)*x(0,0)*Math::sqr(x(1,2))+DataType(4)*x(0,0)*x(1,2)*x(2,2)+DataType(4)*x(0,0)*x(1,2)*x(3,2)-DataType(4)*x(0,0)*Math::sqr(x(2,1))+DataType(4)*x(0,0)*x(2,1)*x(3,1)-DataType(4)*x(0,0)*Math::sqr(x(2,2))+DataType(4)*x(0,0)*x(2,2)*x(3,2)-DataType(4)*x(0,0)*Math::sqr(x(3,1))-DataType(4)*x(0,0)*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(2,2)*x(3,0)*x(3,2));

              grad_cof_part(0,1) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(4)*x(0,0)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(3,0)*x(3,1)-DataType(4)*x(0,1)*Math::sqr(x(1,0))+DataType(4)*x(0,1)*x(1,0)*x(2,0)+DataType(4)*x(0,1)*x(1,0)*x(3,0)-DataType(4)*x(0,1)*Math::sqr(x(1,2))+DataType(4)*x(0,1)*x(1,2)*x(2,2)+DataType(4)*x(0,1)*x(1,2)*x(3,2)-DataType(4)*x(0,1)*Math::sqr(x(2,0))+DataType(4)*x(0,1)*x(2,0)*x(3,0)-DataType(4)*x(0,1)*Math::sqr(x(2,2))+DataType(4)*x(0,1)*x(2,2)*x(3,2)-DataType(4)*x(0,1)*Math::sqr(x(3,0))-DataType(4)*x(0,1)*Math::sqr(x(3,2))+DataType(4)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(2,2)*x(3,1)*x(3,2));

              grad_cof_part(0,2) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(4)*x(0,0)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(3,0)*x(3,2)+DataType(4)*x(0,1)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(3,1)*x(3,2)-DataType(4)*x(0,2)*Math::sqr(x(1,0))+DataType(4)*x(0,2)*x(1,0)*x(2,0)+DataType(4)*x(0,2)*x(1,0)*x(3,0)-DataType(4)*x(0,2)*Math::sqr(x(1,1))+DataType(4)*x(0,2)*x(1,1)*x(2,1)+DataType(4)*x(0,2)*x(1,1)*x(3,1)-DataType(4)*x(0,2)*Math::sqr(x(2,0))+DataType(4)*x(0,2)*x(2,0)*x(3,0)-DataType(4)*x(0,2)*Math::sqr(x(2,1))+DataType(4)*x(0,2)*x(2,1)*x(3,1)-DataType(4)*x(0,2)*Math::sqr(x(3,0))-DataType(4)*x(0,2)*Math::sqr(x(3,1))+DataType(2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(2,2)*Math::sqr(x(3,1)));

              grad_cof_part(1,0) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(4)*x(0,0)*x(0,1)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(3,2)-DataType(2)*x(0,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*Math::sqr(x(3,2))-DataType(4)*Math::sqr(x(0,1))*x(1,0)+DataType(2)*Math::sqr(x(0,1))*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(3,0)+DataType(4)*x(0,1)*x(1,0)*x(2,1)+DataType(4)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(3,0)*x(3,1)-DataType(4)*Math::sqr(x(0,2))*x(1,0)+DataType(2)*Math::sqr(x(0,2))*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(3,0)+DataType(4)*x(0,2)*x(1,0)*x(2,2)+DataType(4)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(3,0)*x(3,2)-DataType(4)*x(1,0)*Math::sqr(x(2,1))+DataType(4)*x(1,0)*x(2,1)*x(3,1)-DataType(4)*x(1,0)*Math::sqr(x(2,2))+DataType(4)*x(1,0)*x(2,2)*x(3,2)-DataType(4)*x(1,0)*Math::sqr(x(3,1))-DataType(4)*x(1,0)*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(2,2)*x(3,0)*x(3,2));

              grad_cof_part(1,1) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(-DataType(4)*Math::sqr(x(0,0))*x(1,1)+DataType(2)*Math::sqr(x(0,0))*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(3,1)+DataType(4)*x(0,0)*x(0,1)*x(1,0)-DataType(2)*x(0,0)*x(0,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(3,0)-DataType(2)*x(0,0)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(3,1)+DataType(4)*x(0,0)*x(1,1)*x(2,0)+DataType(4)*x(0,0)*x(1,1)*x(3,0)-DataType(2)*x(0,0)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(3,0)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(3,2)-DataType(2)*x(0,1)*x(1,0)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(3,0)-DataType(2)*x(0,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*Math::sqr(x(3,2))-DataType(4)*Math::sqr(x(0,2))*x(1,1)+DataType(2)*Math::sqr(x(0,2))*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(3,1)+DataType(4)*x(0,2)*x(1,1)*x(2,2)+DataType(4)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(3,1)*x(3,2)+DataType(4)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(3,0)*x(3,1)-DataType(4)*x(1,1)*Math::sqr(x(2,0))+DataType(4)*x(1,1)*x(2,0)*x(3,0)-DataType(4)*x(1,1)*Math::sqr(x(2,2))+DataType(4)*x(1,1)*x(2,2)*x(3,2)-DataType(4)*x(1,1)*Math::sqr(x(3,0))-DataType(4)*x(1,1)*Math::sqr(x(3,2))+DataType(4)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(2,2)*x(3,1)*x(3,2));

              grad_cof_part(1,2) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(-DataType(4)*Math::sqr(x(0,0))*x(1,2)+DataType(2)*Math::sqr(x(0,0))*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(3,2)+DataType(4)*x(0,0)*x(0,2)*x(1,0)-DataType(2)*x(0,0)*x(0,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(3,0)-DataType(2)*x(0,0)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(3,2)+DataType(4)*x(0,0)*x(1,2)*x(2,0)+DataType(4)*x(0,0)*x(1,2)*x(3,0)-DataType(2)*x(0,0)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(3,0)*x(3,2)-DataType(4)*Math::sqr(x(0,1))*x(1,2)+DataType(2)*Math::sqr(x(0,1))*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(3,2)+DataType(4)*x(0,1)*x(0,2)*x(1,1)-DataType(2)*x(0,1)*x(0,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(3,2)+DataType(4)*x(0,1)*x(1,2)*x(2,1)+DataType(4)*x(0,1)*x(1,2)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(3,1)*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(3,0)-DataType(2)*x(0,2)*x(1,1)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(3,1)+DataType(2)*x(0,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*Math::sqr(x(3,1))+DataType(4)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(3,0)*x(3,2)+DataType(4)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(3,1)*x(3,2)-DataType(4)*x(1,2)*Math::sqr(x(2,0))+DataType(4)*x(1,2)*x(2,0)*x(3,0)-DataType(4)*x(1,2)*Math::sqr(x(2,1))+DataType(4)*x(1,2)*x(2,1)*x(3,1)-DataType(4)*x(1,2)*Math::sqr(x(3,0))-DataType(4)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(2,2)*Math::sqr(x(3,1)));

              grad_cof_part(2,0) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(-DataType(2)*x(0,0)*x(0,1)*x(1,1)+DataType(4)*x(0,0)*x(0,1)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(3,1)-DataType(2)*x(0,0)*x(0,2)*x(1,2)+DataType(4)*x(0,0)*x(0,2)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(3,2)+DataType(2)*x(0,0)*Math::sqr(x(1,1))-DataType(2)*x(0,0)*x(1,1)*x(2,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))-DataType(2)*x(0,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(0,1))*x(1,0)-DataType(4)*Math::sqr(x(0,1))*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,1)*x(1,0)*x(2,1)+DataType(4)*x(0,1)*x(1,1)*x(2,0)+DataType(4)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(3,0)*x(3,1)+DataType(2)*Math::sqr(x(0,2))*x(1,0)-DataType(4)*Math::sqr(x(0,2))*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,2)*x(1,0)*x(2,2)+DataType(4)*x(0,2)*x(1,2)*x(2,0)+DataType(4)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,2)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(3,0)*x(3,2)+DataType(4)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(3,2)-DataType(2)*x(1,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*Math::sqr(x(3,2))-DataType(4)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*Math::sqr(x(1,1))*x(3,0)+DataType(4)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(3,0)*x(3,1)-DataType(4)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*Math::sqr(x(1,2))*x(3,0)+DataType(4)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,2)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(3,0)*x(3,2)-DataType(4)*x(2,0)*Math::sqr(x(3,1))-DataType(4)*x(2,0)*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,2)*x(3,0)*x(3,2));

              grad_cof_part(2,1) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(2)*Math::sqr(x(0,0))*x(1,1)-DataType(4)*Math::sqr(x(0,0))*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(3,0)-DataType(2)*x(0,0)*x(1,0)*x(1,1)+DataType(4)*x(0,0)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(2,0)*x(3,1)+DataType(4)*x(0,0)*x(2,1)*x(3,0)-DataType(2)*x(0,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)+DataType(4)*x(0,1)*x(0,2)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))-DataType(2)*x(0,1)*x(1,0)*x(2,0)+DataType(2)*x(0,1)*Math::sqr(x(1,2))-DataType(2)*x(0,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(2,0)*x(3,0)-DataType(2)*x(0,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*Math::sqr(x(3,2))+DataType(2)*Math::sqr(x(0,2))*x(1,1)-DataType(4)*Math::sqr(x(0,2))*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,2)*x(1,1)*x(2,2)+DataType(4)*x(0,2)*x(1,2)*x(2,1)+DataType(4)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,2)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(3,1)*x(3,2)-DataType(4)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*Math::sqr(x(1,0))*x(3,1)+DataType(4)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(1,0)*x(2,0)*x(3,1)+DataType(4)*x(1,0)*x(2,1)*x(3,0)-DataType(2)*x(1,0)*x(3,0)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(3,2)-DataType(2)*x(1,1)*x(2,0)*x(3,0)-DataType(2)*x(1,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*Math::sqr(x(3,2))-DataType(4)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*Math::sqr(x(1,2))*x(3,1)+DataType(4)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,2)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(3,1)*x(3,2)+DataType(4)*x(2,0)*x(3,0)*x(3,1)-DataType(4)*x(2,1)*Math::sqr(x(3,0))-DataType(4)*x(2,1)*Math::sqr(x(3,2))+DataType(4)*x(2,2)*x(3,1)*x(3,2));

              grad_cof_part(2,2) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(2)*Math::sqr(x(0,0))*x(1,2)-DataType(4)*Math::sqr(x(0,0))*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(3,0)-DataType(2)*x(0,0)*x(1,0)*x(1,2)+DataType(4)*x(0,0)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(2,0)*x(3,2)+DataType(4)*x(0,0)*x(2,2)*x(3,0)-DataType(2)*x(0,0)*x(3,0)*x(3,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)-DataType(4)*Math::sqr(x(0,1))*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)+DataType(4)*x(0,1)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(2,1)*x(3,2)+DataType(4)*x(0,1)*x(2,2)*x(3,1)-DataType(2)*x(0,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))-DataType(2)*x(0,2)*x(1,0)*x(2,0)+DataType(2)*x(0,2)*Math::sqr(x(1,1))-DataType(2)*x(0,2)*x(1,1)*x(2,1)-DataType(2)*x(0,2)*x(2,0)*x(3,0)-DataType(2)*x(0,2)*x(2,1)*x(3,1)+DataType(2)*x(0,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*Math::sqr(x(3,1))-DataType(4)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*Math::sqr(x(1,0))*x(3,2)+DataType(4)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(1,0)*x(2,0)*x(3,2)+DataType(4)*x(1,0)*x(2,2)*x(3,0)-DataType(2)*x(1,0)*x(3,0)*x(3,2)-DataType(4)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*Math::sqr(x(1,1))*x(3,2)+DataType(4)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(3,2)+DataType(4)*x(1,1)*x(2,2)*x(3,1)-DataType(2)*x(1,1)*x(3,1)*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(3,0)-DataType(2)*x(1,2)*x(2,1)*x(3,1)+DataType(2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*Math::sqr(x(3,1))+DataType(4)*x(2,0)*x(3,0)*x(3,2)+DataType(4)*x(2,1)*x(3,1)*x(3,2)-DataType(4)*x(2,2)*Math::sqr(x(3,0))-DataType(4)*x(2,2)*Math::sqr(x(3,1)));

              grad_cof_part(3,0) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(-DataType(2)*x(0,0)*x(0,1)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)+DataType(4)*x(0,0)*x(0,1)*x(3,1)-DataType(2)*x(0,0)*x(0,2)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)+DataType(4)*x(0,0)*x(0,2)*x(3,2)+DataType(2)*x(0,0)*Math::sqr(x(1,1))-DataType(2)*x(0,0)*x(1,1)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))-DataType(2)*x(0,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*Math::sqr(x(2,1))-DataType(2)*x(0,0)*x(2,1)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))-DataType(2)*x(0,0)*x(2,2)*x(3,2)+DataType(2)*Math::sqr(x(0,1))*x(1,0)+DataType(2)*Math::sqr(x(0,1))*x(2,0)-DataType(4)*Math::sqr(x(0,1))*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,1)*x(1,0)*x(3,1)+DataType(4)*x(0,1)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(2,0)*x(3,1)+DataType(4)*x(0,1)*x(2,1)*x(3,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)+DataType(2)*Math::sqr(x(0,2))*x(2,0)-DataType(4)*Math::sqr(x(0,2))*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,2)*x(1,0)*x(3,2)+DataType(4)*x(0,2)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(2,0)*x(3,2)+DataType(4)*x(0,2)*x(2,2)*x(3,0)-DataType(2)*x(1,0)*x(1,1)*x(2,1)+DataType(4)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(1,0)*x(1,2)*x(2,2)+DataType(4)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(1,0)*Math::sqr(x(2,1))-DataType(2)*x(1,0)*x(2,1)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))-DataType(2)*x(1,0)*x(2,2)*x(3,2)+DataType(2)*Math::sqr(x(1,1))*x(2,0)-DataType(4)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,1)*x(2,0)*x(3,1)+DataType(4)*x(1,1)*x(2,1)*x(3,0)+DataType(2)*Math::sqr(x(1,2))*x(2,0)-DataType(4)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,2)*x(2,0)*x(3,2)+DataType(4)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(2,0)*x(2,1)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,2)-DataType(4)*Math::sqr(x(2,1))*x(3,0)-DataType(4)*Math::sqr(x(2,2))*x(3,0));

              grad_cof_part(3,1) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(2)*Math::sqr(x(0,0))*x(1,1)+DataType(2)*Math::sqr(x(0,0))*x(2,1)-DataType(4)*Math::sqr(x(0,0))*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)-DataType(2)*x(0,0)*x(0,1)*x(2,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)-DataType(2)*x(0,0)*x(1,0)*x(1,1)+DataType(4)*x(0,0)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)-DataType(2)*x(0,0)*x(2,0)*x(2,1)+DataType(4)*x(0,0)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(0,2)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)+DataType(4)*x(0,1)*x(0,2)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))-DataType(2)*x(0,1)*x(1,0)*x(3,0)+DataType(2)*x(0,1)*Math::sqr(x(1,2))-DataType(2)*x(0,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))-DataType(2)*x(0,1)*x(2,0)*x(3,0)+DataType(2)*x(0,1)*Math::sqr(x(2,2))-DataType(2)*x(0,1)*x(2,2)*x(3,2)+DataType(2)*Math::sqr(x(0,2))*x(1,1)+DataType(2)*Math::sqr(x(0,2))*x(2,1)-DataType(4)*Math::sqr(x(0,2))*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,2)*x(1,1)*x(3,2)+DataType(4)*x(0,2)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(2,1)*x(3,2)+DataType(4)*x(0,2)*x(2,2)*x(3,1)+DataType(2)*Math::sqr(x(1,0))*x(2,1)-DataType(4)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(1,0)*x(2,0)*x(2,1)+DataType(4)*x(1,0)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(1,2)*x(2,2)+DataType(4)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))-DataType(2)*x(1,1)*x(2,0)*x(3,0)+DataType(2)*x(1,1)*Math::sqr(x(2,2))-DataType(2)*x(1,1)*x(2,2)*x(3,2)+DataType(2)*Math::sqr(x(1,2))*x(2,1)-DataType(4)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,2)*x(2,1)*x(3,2)+DataType(4)*x(1,2)*x(2,2)*x(3,1)-DataType(4)*Math::sqr(x(2,0))*x(3,1)+DataType(4)*x(2,0)*x(2,1)*x(3,0)+DataType(4)*x(2,1)*x(2,2)*x(3,2)-DataType(4)*Math::sqr(x(2,2))*x(3,1));

              grad_cof_part(3,2) += DataType(2)*this->_fac_cof*(DataType(3)*Math::pow(h,DataType(4))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,0))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,0))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(0,0))*Math::sqr(x(3,2))+DataType(4)*x(0,0)*x(0,1)*x(1,0)*x(1,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(1,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(2,0)-DataType(2)*x(0,0)*x(0,1)*x(1,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(0,1)*x(2,0)*x(3,1)-DataType(2)*x(0,0)*x(0,1)*x(2,1)*x(3,0)+DataType(4)*x(0,0)*x(0,1)*x(3,0)*x(3,1)+DataType(4)*x(0,0)*x(0,2)*x(1,0)*x(1,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(2,0)-DataType(2)*x(0,0)*x(0,2)*x(1,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(0,2)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(2,2)*x(3,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(2,1)-DataType(2)*x(0,0)*x(1,0)*x(1,1)*x(3,1)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(2,2)-DataType(2)*x(0,0)*x(1,0)*x(1,2)*x(3,2)+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(2,2))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(1,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,1))*x(3,0)-DataType(2)*x(0,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(0,0)*x(1,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(2,0)+DataType(2)*x(0,0)*Math::sqr(x(1,2))*x(3,0)-DataType(2)*x(0,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(0,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(0,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(0,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(0,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(0,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(0,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(0,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,1))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(1,2))+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(2,2)+DataType(2)*Math::sqr(x(0,1))*x(1,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(0,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,1))*Math::sqr(x(3,2))+DataType(4)*x(0,1)*x(0,2)*x(1,1)*x(1,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(2,1)-DataType(2)*x(0,1)*x(0,2)*x(1,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(0,2)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(2,2)*x(3,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,0))*x(3,1)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(2,0)-DataType(2)*x(0,1)*x(1,0)*x(1,1)*x(3,0)-DataType(2)*x(0,1)*x(1,0)*x(2,0)*x(2,1)-DataType(2)*x(0,1)*x(1,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(2,2)-DataType(2)*x(0,1)*x(1,1)*x(1,2)*x(3,2)+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(2,2))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(1,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(2,1)+DataType(2)*x(0,1)*Math::sqr(x(1,2))*x(3,1)-DataType(2)*x(0,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(0,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(0,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(0,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(0,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(0,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(0,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,0))+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(2,0)+DataType(2)*Math::sqr(x(0,2))*x(1,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(1,1))+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(2,1)+DataType(2)*Math::sqr(x(0,2))*x(1,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(0,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(0,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(0,2))*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(2,0)-DataType(2)*x(0,2)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(0,2)*x(1,0)*x(2,0)*x(2,2)-DataType(2)*x(0,2)*x(1,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(2,2)+DataType(2)*x(0,2)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(2,1)-DataType(2)*x(0,2)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(0,2)*x(1,1)*x(2,1)*x(2,2)-DataType(2)*x(0,2)*x(1,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(2,1))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(1,2)*Math::sqr(x(3,1))+DataType(2)*x(0,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(0,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(0,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(0,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(0,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(0,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(0,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,0))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,0))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(1,0))*Math::sqr(x(3,2))+DataType(4)*x(1,0)*x(1,1)*x(2,0)*x(2,1)-DataType(2)*x(1,0)*x(1,1)*x(2,0)*x(3,1)-DataType(2)*x(1,0)*x(1,1)*x(2,1)*x(3,0)+DataType(4)*x(1,0)*x(1,1)*x(3,0)*x(3,1)+DataType(4)*x(1,0)*x(1,2)*x(2,0)*x(2,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,2)*x(3,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)*x(3,2)-DataType(2)*x(1,0)*x(2,0)*x(2,1)*x(3,1)-DataType(2)*x(1,0)*x(2,0)*x(2,2)*x(3,2)+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,1))+DataType(2)*x(1,0)*x(2,0)*Math::sqr(x(3,2))+DataType(2)*x(1,0)*Math::sqr(x(2,1))*x(3,0)-DataType(2)*x(1,0)*x(2,1)*x(3,0)*x(3,1)+DataType(2)*x(1,0)*Math::sqr(x(2,2))*x(3,0)-DataType(2)*x(1,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,1))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(2,2))+DataType(2)*Math::sqr(x(1,1))*x(2,2)*x(3,2)-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,1))*Math::sqr(x(3,2))+DataType(4)*x(1,1)*x(1,2)*x(2,1)*x(2,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,2)*x(3,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)*x(3,2)+DataType(2)*x(1,1)*Math::sqr(x(2,0))*x(3,1)-DataType(2)*x(1,1)*x(2,0)*x(2,1)*x(3,0)-DataType(2)*x(1,1)*x(2,0)*x(3,0)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)*x(3,2)+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,0))+DataType(2)*x(1,1)*x(2,1)*Math::sqr(x(3,2))+DataType(2)*x(1,1)*Math::sqr(x(2,2))*x(3,1)-DataType(2)*x(1,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,0))+DataType(2)*Math::sqr(x(1,2))*x(2,0)*x(3,0)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(2,1))+DataType(2)*Math::sqr(x(1,2))*x(2,1)*x(3,1)-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(1,2))*Math::sqr(x(3,1))+DataType(2)*x(1,2)*Math::sqr(x(2,0))*x(3,2)-DataType(2)*x(1,2)*x(2,0)*x(2,2)*x(3,0)-DataType(2)*x(1,2)*x(2,0)*x(3,0)*x(3,2)+DataType(2)*x(1,2)*Math::sqr(x(2,1))*x(3,2)-DataType(2)*x(1,2)*x(2,1)*x(2,2)*x(3,1)-DataType(2)*x(1,2)*x(2,1)*x(3,1)*x(3,2)+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,0))+DataType(2)*x(1,2)*x(2,2)*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,1))-DataType(2)*Math::sqr(x(2,0))*Math::sqr(x(3,2))+DataType(4)*x(2,0)*x(2,1)*x(3,0)*x(3,1)+DataType(4)*x(2,0)*x(2,2)*x(3,0)*x(3,2)-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,1))*Math::sqr(x(3,2))+DataType(4)*x(2,1)*x(2,2)*x(3,1)*x(3,2)-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,0))-DataType(2)*Math::sqr(x(2,2))*Math::sqr(x(3,1)))*Math::pow(h,-DataType(8))*(DataType(2)*Math::sqr(x(0,0))*x(1,2)+DataType(2)*Math::sqr(x(0,0))*x(2,2)-DataType(4)*Math::sqr(x(0,0))*x(3,2)-DataType(2)*x(0,0)*x(0,2)*x(1,0)-DataType(2)*x(0,0)*x(0,2)*x(2,0)+DataType(4)*x(0,0)*x(0,2)*x(3,0)-DataType(2)*x(0,0)*x(1,0)*x(1,2)+DataType(4)*x(0,0)*x(1,0)*x(3,2)-DataType(2)*x(0,0)*x(1,2)*x(3,0)-DataType(2)*x(0,0)*x(2,0)*x(2,2)+DataType(4)*x(0,0)*x(2,0)*x(3,2)-DataType(2)*x(0,0)*x(2,2)*x(3,0)+DataType(2)*Math::sqr(x(0,1))*x(1,2)+DataType(2)*Math::sqr(x(0,1))*x(2,2)-DataType(4)*Math::sqr(x(0,1))*x(3,2)-DataType(2)*x(0,1)*x(0,2)*x(1,1)-DataType(2)*x(0,1)*x(0,2)*x(2,1)+DataType(4)*x(0,1)*x(0,2)*x(3,1)-DataType(2)*x(0,1)*x(1,1)*x(1,2)+DataType(4)*x(0,1)*x(1,1)*x(3,2)-DataType(2)*x(0,1)*x(1,2)*x(3,1)-DataType(2)*x(0,1)*x(2,1)*x(2,2)+DataType(4)*x(0,1)*x(2,1)*x(3,2)-DataType(2)*x(0,1)*x(2,2)*x(3,1)+DataType(2)*x(0,2)*Math::sqr(x(1,0))-DataType(2)*x(0,2)*x(1,0)*x(3,0)+DataType(2)*x(0,2)*Math::sqr(x(1,1))-DataType(2)*x(0,2)*x(1,1)*x(3,1)+DataType(2)*x(0,2)*Math::sqr(x(2,0))-DataType(2)*x(0,2)*x(2,0)*x(3,0)+DataType(2)*x(0,2)*Math::sqr(x(2,1))-DataType(2)*x(0,2)*x(2,1)*x(3,1)+DataType(2)*Math::sqr(x(1,0))*x(2,2)-DataType(4)*Math::sqr(x(1,0))*x(3,2)-DataType(2)*x(1,0)*x(1,2)*x(2,0)+DataType(4)*x(1,0)*x(1,2)*x(3,0)-DataType(2)*x(1,0)*x(2,0)*x(2,2)+DataType(4)*x(1,0)*x(2,0)*x(3,2)-DataType(2)*x(1,0)*x(2,2)*x(3,0)+DataType(2)*Math::sqr(x(1,1))*x(2,2)-DataType(4)*Math::sqr(x(1,1))*x(3,2)-DataType(2)*x(1,1)*x(1,2)*x(2,1)+DataType(4)*x(1,1)*x(1,2)*x(3,1)-DataType(2)*x(1,1)*x(2,1)*x(2,2)+DataType(4)*x(1,1)*x(2,1)*x(3,2)-DataType(2)*x(1,1)*x(2,2)*x(3,1)+DataType(2)*x(1,2)*Math::sqr(x(2,0))-DataType(2)*x(1,2)*x(2,0)*x(3,0)+DataType(2)*x(1,2)*Math::sqr(x(2,1))-DataType(2)*x(1,2)*x(2,1)*x(3,1)-DataType(4)*Math::sqr(x(2,0))*x(3,2)+DataType(4)*x(2,0)*x(2,2)*x(3,0)-DataType(4)*Math::sqr(x(2,1))*x(3,2)+DataType(4)*x(2,1)*x(2,2)*x(3,1));

            }

          /**
           * \brief Computes the gradient of the Frobenius norm term
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_det_1_part(Tx& grad_det_1_part, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_det_1_part(Tx& grad_det_1_part, const Tx& x, const DataType& h)
#endif
            {
              grad_det_1_part(0,0) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(1,1)*x(2,2)-x(1,1)*x(3,2)-x(1,2)*x(2,1)+x(1,2)*x(3,1)+x(2,1)*x(3,2)-x(2,2)*x(3,1))/(h*h*h)/DataType(3);

              grad_det_1_part(0,1) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(1,0)*x(2,2)+x(1,0)*x(3,2)+x(1,2)*x(2,0)-x(1,2)*x(3,0)-x(2,0)*x(3,2)+x(2,2)*x(3,0))/(h*h*h)/DataType(3);

              grad_det_1_part(0,2) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(1,0)*x(2,1)-x(1,0)*x(3,1)-x(1,1)*x(2,0)+x(1,1)*x(3,0)+x(2,0)*x(3,1)-x(2,1)*x(3,0))/(h*h*h)/DataType(3);

              grad_det_1_part(1,0) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,1)*x(2,2)+x(0,1)*x(3,2)+x(0,2)*x(2,1)-x(0,2)*x(3,1)-x(2,1)*x(3,2)+x(2,2)*x(3,1))/(h*h*h)/DataType(3);

              grad_det_1_part(1,1) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(2,2)-x(0,0)*x(3,2)-x(0,2)*x(2,0)+x(0,2)*x(3,0)+x(2,0)*x(3,2)-x(2,2)*x(3,0))/(h*h*h)/DataType(3);

              grad_det_1_part(1,2) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(2,1)+x(0,0)*x(3,1)+x(0,1)*x(2,0)-x(0,1)*x(3,0)-x(2,0)*x(3,1)+x(2,1)*x(3,0))/(h*h*h)/DataType(3);

              grad_det_1_part(2,0) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,1)*x(1,2)-x(0,1)*x(3,2)-x(0,2)*x(1,1)+x(0,2)*x(3,1)+x(1,1)*x(3,2)-x(1,2)*x(3,1))/(h*h*h)/DataType(3);

              grad_det_1_part(2,1) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(1,2)+x(0,0)*x(3,2)+x(0,2)*x(1,0)-x(0,2)*x(3,0)-x(1,0)*x(3,2)+x(1,2)*x(3,0))/(h*h*h)/DataType(3);

              grad_det_1_part(2,2) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)-x(0,0)*x(3,1)-x(0,1)*x(1,0)+x(0,1)*x(3,0)+x(1,0)*x(3,1)-x(1,1)*x(3,0))/(h*h*h)/DataType(3);

              grad_det_1_part(3,0) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,1)*x(1,2)+x(0,1)*x(2,2)+x(0,2)*x(1,1)-x(0,2)*x(2,1)-x(1,1)*x(2,2)+x(1,2)*x(2,1))/(h*h*h)/DataType(3);

              grad_det_1_part(3,1) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,2)-x(0,0)*x(2,2)-x(0,2)*x(1,0)+x(0,2)*x(2,0)+x(1,0)*x(2,2)-x(1,2)*x(2,0))/(h*h*h)/DataType(3);

              grad_det_1_part(3,2) += -this->_fac_det*Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(1,1)+x(0,0)*x(2,1)+x(0,1)*x(1,0)-x(0,1)*x(2,0)-x(1,0)*x(2,1)+x(1,1)*x(2,0))/(h*h*h)/DataType(3);
            }

          /**
           * \brief Computes the gradient of the Frobenius norm term
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_det_2_part(Tx& grad_det_2_part, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_det_2_part(Tx& grad_det_2_part, const Tx& x, const DataType& h)
#endif
            {
              grad_det_2_part(0,0) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(1,1)*x(2,2)-x(1,1)*x(3,2)-x(1,2)*x(2,1)+x(1,2)*x(3,1)+x(2,1)*x(3,2)-x(2,2)*x(3,1));

              grad_det_2_part(0,1) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(1,0)*x(2,2)+x(1,0)*x(3,2)+x(1,2)*x(2,0)-x(1,2)*x(3,0)-x(2,0)*x(3,2)+x(2,2)*x(3,0));

              grad_det_2_part(0,2) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(1,0)*x(2,1)-x(1,0)*x(3,1)-x(1,1)*x(2,0)+x(1,1)*x(3,0)+x(2,0)*x(3,1)-x(2,1)*x(3,0));

              grad_det_2_part(1,0) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,1)*x(2,2)+x(0,1)*x(3,2)+x(0,2)*x(2,1)-x(0,2)*x(3,1)-x(2,1)*x(3,2)+x(2,2)*x(3,1));

              grad_det_2_part(1,1) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(2,2)-x(0,0)*x(3,2)-x(0,2)*x(2,0)+x(0,2)*x(3,0)+x(2,0)*x(3,2)-x(2,2)*x(3,0));

              grad_det_2_part(1,2) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(2,1)+x(0,0)*x(3,1)+x(0,1)*x(2,0)-x(0,1)*x(3,0)-x(2,0)*x(3,1)+x(2,1)*x(3,0));

              grad_det_2_part(2,0) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,1)*x(1,2)-x(0,1)*x(3,2)-x(0,2)*x(1,1)+x(0,2)*x(3,1)+x(1,1)*x(3,2)-x(1,2)*x(3,1));

              grad_det_2_part(2,1) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(1,2)+x(0,0)*x(3,2)+x(0,2)*x(1,0)-x(0,2)*x(3,0)-x(1,0)*x(3,2)+x(1,2)*x(3,0));

              grad_det_2_part(2,2) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(1,1)-x(0,0)*x(3,1)-x(0,1)*x(1,0)+x(0,1)*x(3,0)+x(1,0)*x(3,1)-x(1,1)*x(3,0));

              grad_det_2_part(3,0) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,1)*x(1,2)+x(0,1)*x(2,2)+x(0,2)*x(1,1)-x(0,2)*x(2,1)-x(1,1)*x(2,2)+x(1,2)*x(2,1));

              grad_det_2_part(3,1) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(1,2)-x(0,0)*x(2,2)-x(0,2)*x(1,0)+x(0,2)*x(2,0)+x(1,0)*x(2,2)-x(1,2)*x(2,0));

              grad_det_2_part(3,2) += DataType(4)*this->_fac_det*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(1,1)+x(0,0)*x(2,1)+x(0,1)*x(1,0)-x(0,1)*x(2,0)-x(1,0)*x(2,1)+x(1,1)*x(2,0));
            }

          /**
           * \brief Computes the gradient of the Frobenius norm term
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_rec_det_1_part(Tx& grad_rec_det_1_part, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_rec_det_1_part(Tx& grad_rec_det_1_part, const Tx& x, const DataType& h)
#endif
            {
              grad_rec_det_1_part(0,0) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(1,1)*x(2,2)-x(1,1)*x(3,2)-x(1,2)*x(2,1)+x(1,2)*x(3,1)+x(2,1)*x(3,2)-x(2,2)*x(3,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(1,1)*x(2,2)-x(1,1)*x(3,2)-x(1,2)*x(2,1)+x(1,2)*x(3,1)+x(2,1)*x(3,2)-x(2,2)*x(3,1)));

              grad_rec_det_1_part(0,1) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(1,0)*x(2,2)+x(1,0)*x(3,2)+x(1,2)*x(2,0)-x(1,2)*x(3,0)-x(2,0)*x(3,2)+x(2,2)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(1,0)*x(2,2)+x(1,0)*x(3,2)+x(1,2)*x(2,0)-x(1,2)*x(3,0)-x(2,0)*x(3,2)+x(2,2)*x(3,0)));

              grad_rec_det_1_part(0,2) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(1,0)*x(2,1)-x(1,0)*x(3,1)-x(1,1)*x(2,0)+x(1,1)*x(3,0)+x(2,0)*x(3,1)-x(2,1)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(1,0)*x(2,1)-x(1,0)*x(3,1)-x(1,1)*x(2,0)+x(1,1)*x(3,0)+x(2,0)*x(3,1)-x(2,1)*x(3,0)));

              grad_rec_det_1_part(1,0) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,1)*x(2,2)+x(0,1)*x(3,2)+x(0,2)*x(2,1)-x(0,2)*x(3,1)-x(2,1)*x(3,2)+x(2,2)*x(3,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,1)*x(2,2)+x(0,1)*x(3,2)+x(0,2)*x(2,1)-x(0,2)*x(3,1)-x(2,1)*x(3,2)+x(2,2)*x(3,1)));

              grad_rec_det_1_part(1,1) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(2,2)-x(0,0)*x(3,2)-x(0,2)*x(2,0)+x(0,2)*x(3,0)+x(2,0)*x(3,2)-x(2,2)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(2,2)-x(0,0)*x(3,2)-x(0,2)*x(2,0)+x(0,2)*x(3,0)+x(2,0)*x(3,2)-x(2,2)*x(3,0)));

              grad_rec_det_1_part(1,2) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(2,1)+x(0,0)*x(3,1)+x(0,1)*x(2,0)-x(0,1)*x(3,0)-x(2,0)*x(3,1)+x(2,1)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(2,1)+x(0,0)*x(3,1)+x(0,1)*x(2,0)-x(0,1)*x(3,0)-x(2,0)*x(3,1)+x(2,1)*x(3,0)));

              grad_rec_det_1_part(2,0) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,1)*x(1,2)-x(0,1)*x(3,2)-x(0,2)*x(1,1)+x(0,2)*x(3,1)+x(1,1)*x(3,2)-x(1,2)*x(3,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,1)*x(1,2)-x(0,1)*x(3,2)-x(0,2)*x(1,1)+x(0,2)*x(3,1)+x(1,1)*x(3,2)-x(1,2)*x(3,1)));

              grad_rec_det_1_part(2,1) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(1,2)+x(0,0)*x(3,2)+x(0,2)*x(1,0)-x(0,2)*x(3,0)-x(1,0)*x(3,2)+x(1,2)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(1,2)+x(0,0)*x(3,2)+x(0,2)*x(1,0)-x(0,2)*x(3,0)-x(1,0)*x(3,2)+x(1,2)*x(3,0)));

              grad_rec_det_1_part(2,2) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)-x(0,0)*x(3,1)-x(0,1)*x(1,0)+x(0,1)*x(3,0)+x(1,0)*x(3,1)-x(1,1)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(1,1)-x(0,0)*x(3,1)-x(0,1)*x(1,0)+x(0,1)*x(3,0)+x(1,0)*x(3,1)-x(1,1)*x(3,0)));

              grad_rec_det_1_part(3,0) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,1)*x(1,2)+x(0,1)*x(2,2)+x(0,2)*x(1,1)-x(0,2)*x(2,1)-x(1,1)*x(2,2)+x(1,2)*x(2,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,1)*x(1,2)+x(0,1)*x(2,2)+x(0,2)*x(1,1)-x(0,2)*x(2,1)-x(1,1)*x(2,2)+x(1,2)*x(2,1)));

              grad_rec_det_1_part(3,1) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,2)-x(0,0)*x(2,2)-x(0,2)*x(1,0)+x(0,2)*x(2,0)+x(1,0)*x(2,2)-x(1,2)*x(2,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(1,2)-x(0,0)*x(2,2)-x(0,2)*x(1,0)+x(0,2)*x(2,0)+x(1,0)*x(2,2)-x(1,2)*x(2,0)));

              grad_rec_det_1_part(3,2) += -this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(2))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(1,1)+x(0,0)*x(2,1)+x(0,1)*x(1,0)-x(0,1)*x(2,0)-x(1,0)*x(2,1)+x(1,1)*x(2,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(1,1)+x(0,0)*x(2,1)+x(0,1)*x(1,0)-x(0,1)*x(2,0)-x(1,0)*x(2,1)+x(1,1)*x(2,0)));
            }

          /**
           * \brief Computes the gradient of the Frobenius norm term
           */
          /// \compilerhack icc < 16.0 gets confused by NOINLINE
#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_rec_det_2_part(Tx& grad_rec_det_2_part, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_rec_det_2_part(Tx& grad_rec_det_2_part, const Tx& x, const DataType& h)
#endif
            {
              grad_rec_det_2_part(0,0) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(1,1)*x(2,2)-x(1,1)*x(3,2)-x(1,2)*x(2,1)+x(1,2)*x(3,1)+x(2,1)*x(3,2)-x(2,2)*x(3,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(1,1)*x(2,2)-x(1,1)*x(3,2)-x(1,2)*x(2,1)+x(1,2)*x(3,1)+x(2,1)*x(3,2)-x(2,2)*x(3,1)));

              grad_rec_det_2_part(0,1) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(1,0)*x(2,2)+x(1,0)*x(3,2)+x(1,2)*x(2,0)-x(1,2)*x(3,0)-x(2,0)*x(3,2)+x(2,2)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(1,0)*x(2,2)+x(1,0)*x(3,2)+x(1,2)*x(2,0)-x(1,2)*x(3,0)-x(2,0)*x(3,2)+x(2,2)*x(3,0)));

              grad_rec_det_2_part(0,2) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(1,0)*x(2,1)-x(1,0)*x(3,1)-x(1,1)*x(2,0)+x(1,1)*x(3,0)+x(2,0)*x(3,1)-x(2,1)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(1,0)*x(2,1)-x(1,0)*x(3,1)-x(1,1)*x(2,0)+x(1,1)*x(3,0)+x(2,0)*x(3,1)-x(2,1)*x(3,0)));

              grad_rec_det_2_part(1,0) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,1)*x(2,2)+x(0,1)*x(3,2)+x(0,2)*x(2,1)-x(0,2)*x(3,1)-x(2,1)*x(3,2)+x(2,2)*x(3,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,1)*x(2,2)+x(0,1)*x(3,2)+x(0,2)*x(2,1)-x(0,2)*x(3,1)-x(2,1)*x(3,2)+x(2,2)*x(3,1)));

              grad_rec_det_2_part(1,1) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(2,2)-x(0,0)*x(3,2)-x(0,2)*x(2,0)+x(0,2)*x(3,0)+x(2,0)*x(3,2)-x(2,2)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(2,2)-x(0,0)*x(3,2)-x(0,2)*x(2,0)+x(0,2)*x(3,0)+x(2,0)*x(3,2)-x(2,2)*x(3,0)));

              grad_rec_det_2_part(1,2) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(2,1)+x(0,0)*x(3,1)+x(0,1)*x(2,0)-x(0,1)*x(3,0)-x(2,0)*x(3,1)+x(2,1)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(2,1)+x(0,0)*x(3,1)+x(0,1)*x(2,0)-x(0,1)*x(3,0)-x(2,0)*x(3,1)+x(2,1)*x(3,0)));

              grad_rec_det_2_part(2,0) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,1)*x(1,2)-x(0,1)*x(3,2)-x(0,2)*x(1,1)+x(0,2)*x(3,1)+x(1,1)*x(3,2)-x(1,2)*x(3,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,1)*x(1,2)-x(0,1)*x(3,2)-x(0,2)*x(1,1)+x(0,2)*x(3,1)+x(1,1)*x(3,2)-x(1,2)*x(3,1)));

              grad_rec_det_2_part(2,1) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(1,2)+x(0,0)*x(3,2)+x(0,2)*x(1,0)-x(0,2)*x(3,0)-x(1,0)*x(3,2)+x(1,2)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(1,2)+x(0,0)*x(3,2)+x(0,2)*x(1,0)-x(0,2)*x(3,0)-x(1,0)*x(3,2)+x(1,2)*x(3,0)));

              grad_rec_det_2_part(2,2) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)-x(0,0)*x(3,1)-x(0,1)*x(1,0)+x(0,1)*x(3,0)+x(1,0)*x(3,1)-x(1,1)*x(3,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(1,1)-x(0,0)*x(3,1)-x(0,1)*x(1,0)+x(0,1)*x(3,0)+x(1,0)*x(3,1)-x(1,1)*x(3,0)));

              grad_rec_det_2_part(3,0) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,1)*x(1,2)+x(0,1)*x(2,2)+x(0,2)*x(1,1)-x(0,2)*x(2,1)-x(1,1)*x(2,2)+x(1,2)*x(2,1))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,1)*x(1,2)+x(0,1)*x(2,2)+x(0,2)*x(1,1)-x(0,2)*x(2,1)-x(1,1)*x(2,2)+x(1,2)*x(2,1)));

              grad_rec_det_2_part(3,1) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,2)-x(0,0)*x(2,2)-x(0,2)*x(1,0)+x(0,2)*x(2,0)+x(1,0)*x(2,2)-x(1,2)*x(2,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(x(0,0)*x(1,2)-x(0,0)*x(2,2)-x(0,2)*x(1,0)+x(0,2)*x(2,0)+x(1,0)*x(2,2)-x(1,2)*x(2,0)));

              grad_rec_det_2_part(3,2) += -DataType(2)*this->_fac_rec_det*Math::pow(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h)/DataType(3)+Math::sqrt(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h)),-DataType(3))*(-Math::sqrt(DataType(3))*Math::sqrt(DataType(6))*(-x(0,0)*x(1,1)+x(0,0)*x(2,1)+x(0,1)*x(1,0)-x(0,1)*x(2,0)-x(1,0)*x(2,1)+x(1,1)*x(2,0))/(h*h*h)/DataType(3)+DataType(2)*Math::pow(this->_fac_reg*this->_fac_reg+DataType(2)*Math::pow(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0),DataType(2))/(h*h*h*h*h*h),-DataType(1)/DataType(2))*(x(0,0)*x(1,1)*x(2,2)-x(0,0)*x(1,1)*x(3,2)-x(0,0)*x(1,2)*x(2,1)+x(0,0)*x(1,2)*x(3,1)+x(0,0)*x(2,1)*x(3,2)-x(0,0)*x(2,2)*x(3,1)-x(0,1)*x(1,0)*x(2,2)+x(0,1)*x(1,0)*x(3,2)+x(0,1)*x(1,2)*x(2,0)-x(0,1)*x(1,2)*x(3,0)-x(0,1)*x(2,0)*x(3,2)+x(0,1)*x(2,2)*x(3,0)+x(0,2)*x(1,0)*x(2,1)-x(0,2)*x(1,0)*x(3,1)-x(0,2)*x(1,1)*x(2,0)+x(0,2)*x(1,1)*x(3,0)+x(0,2)*x(2,0)*x(3,1)-x(0,2)*x(2,1)*x(3,0)-x(1,0)*x(2,1)*x(3,2)+x(1,0)*x(2,2)*x(3,1)+x(1,1)*x(2,0)*x(3,2)-x(1,1)*x(2,2)*x(3,0)-x(1,2)*x(2,0)*x(3,1)+x(1,2)*x(2,1)*x(3,0))/(h*h*h*h*h*h)*(-x(0,0)*x(1,1)+x(0,0)*x(2,1)+x(0,1)*x(1,0)-x(0,1)*x(2,0)-x(1,0)*x(2,1)+x(1,1)*x(2,0)));
            }

#if defined(FEAT_COMPILER_INTEL) && (FEAT_COMPILER_INTEL < 1600)
          void add_grad_cof_part_1(Tx& grad_cof_part1, const Tx& x, const DataType& h)
#else
            void NOINLINE add_grad_cof_part_1(Tx& grad_cof_part1, const Tx& x, const DataType& h)
#endif
            {
              grad_cof_part1[0][0] += DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(1,1) * x(2,2) - x(1,1) * x(3,2) - x(2,1) * x(1,2) + x(1,2) * x(3,1) + x(2,1) * x(3,2) - x(2,2) * x(3,1)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[0][1] += -DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(1,0) * x(2,2) - x(1,0) * x(3,2) - x(2,0) * x(1,2) + x(1,2) * x(3,0) + x(2,0) * x(3,2) - x(2,2) * x(3,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[0][2] += DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(1,0) * x(2,1) - x(1,0) * x(3,1) - x(1,1) * x(2,0) + x(1,1) * x(3,0) + x(2,0) * x(3,1) - x(2,1) * x(3,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[1][0] += -DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,1) * x(2,2) - x(0,1) * x(3,2) - x(2,1) * x(0,2) + x(0,2) * x(3,1) + x(2,1) * x(3,2) - x(2,2) * x(3,1)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[1][1] += DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,0) * x(2,2) - x(0,0) * x(3,2) - x(2,0) * x(0,2) + x(0,2) * x(3,0) + x(2,0) * x(3,2) - x(2,2) * x(3,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[1][2] += -DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,0) * x(2,1) - x(0,0) * x(3,1) - x(2,0) * x(0,1) + x(0,1) * x(3,0) + x(2,0) * x(3,1) - x(2,1) * x(3,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[2][0] += DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,1) * x(1,2) - x(0,1) * x(3,2) - x(1,1) * x(0,2) + x(0,2) * x(3,1) + x(1,1) * x(3,2) - x(1,2) * x(3,1)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[2][1] += -DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,0) * x(1,2) - x(0,0) * x(3,2) - x(1,0) * x(0,2) + x(0,2) * x(3,0) + x(1,0) * x(3,2) - x(1,2) * x(3,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[2][2] += DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,0) * x(1,1) - x(0,0) * x(3,1) - x(1,0) * x(0,1) + x(0,1) * x(3,0) + x(1,0) * x(3,1) - x(1,1) * x(3,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[3][0] += -DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,1) * x(1,2) - x(0,1) * x(2,2) - x(1,1) * x(0,2) + x(2,1) * x(0,2) + x(1,1) * x(2,2) - x(2,1) * x(1,2)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[3][1] += DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,0) * x(1,2) - x(0,0) * x(2,2) - x(1,0) * x(0,2) + x(2,0) * x(0,2) + x(1,0) * x(2,2) - x(2,0) * x(1,2)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));
              grad_cof_part1[3][2] += -DataType(8) * this->_fac_cof * (Math::pow(Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18), DataType(2)) + Math::pow(-Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(18) + Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(18) - Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(18), DataType(2)) + Math::pow(-(x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,2) + x(1,2) + x(2,2) - DataType(3) * x(3,2)) / DataType(6) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,1) + x(1,1) + x(2,1) - DataType(3) * x(3,1)) / DataType(6) + (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(6)) * (x(0,0) + x(1,0) + x(2,0) - DataType(3) * x(3,0)) / DataType(6), DataType(2)) + Math::pow((x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) - (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3), DataType(2)) + Math::pow(-(x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,2) + x(1,2) - DataType(2) * x(2,2)) / DataType(3) + (x(0,2) - x(1,2)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) + Math::pow((x(0,0) - x(1,0)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,1) + x(1,1) - DataType(2) * x(2,1)) / DataType(3) - (x(0,1) - x(1,1)) / Math::sqr(h) * Math::sqrt(DataType(3)) * (x(0,0) + x(1,0) - DataType(2) * x(2,0)) / DataType(3), DataType(2)) - DataType(3)) * (x(0,0) * x(1,1) - x(0,0) * x(2,1) - x(1,0) * x(0,1) + x(2,0) * x(0,1) + x(1,0) * x(2,1) - x(1,1) * x(2,0)) * (Math::sqr(x(0,0)) * Math::sqr(x(1,1)) - Math::sqr(x(0,0)) * x(1,1) * x(2,1) - Math::sqr(x(0,0)) * x(1,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(1,2)) - Math::sqr(x(0,0)) * x(1,2) * x(2,2) - Math::sqr(x(0,0)) * x(1,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(2,1)) - Math::sqr(x(0,0)) * x(2,1) * x(3,1) + Math::sqr(x(0,0)) * Math::sqr(x(2,2)) - Math::sqr(x(0,0)) * x(2,2) * x(3,2) + Math::sqr(x(0,0)) * Math::sqr(x(3,1)) + Math::sqr(x(0,0)) * Math::sqr(x(3,2)) - DataType(2) * x(0,0) * x(0,1) * x(1,0) * x(1,1) + x(0,0) * x(0,1) * x(1,0) * x(2,1) + x(0,0) * x(0,1) * x(1,0) * x(3,1) + x(0,0) * x(0,1) * x(1,1) * x(2,0) + x(0,0) * x(0,1) * x(1,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(2,0) * x(2,1) + x(0,0) * x(0,1) * x(2,0) * x(3,1) + x(0,0) * x(0,1) * x(2,1) * x(3,0) - DataType(2) * x(0,0) * x(0,1) * x(3,0) * x(3,1) - DataType(2) * x(0,0) * x(0,2) * x(1,0) * x(1,2) + x(0,0) * x(0,2) * x(1,0) * x(2,2) + x(0,0) * x(0,2) * x(1,0) * x(3,2) + x(0,0) * x(0,2) * x(1,2) * x(2,0) + x(0,0) * x(0,2) * x(1,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(2,0) * x(2,2) + x(0,0) * x(0,2) * x(2,0) * x(3,2) + x(0,0) * x(0,2) * x(2,2) * x(3,0) - DataType(2) * x(0,0) * x(0,2) * x(3,0) * x(3,2) + x(0,0) * x(1,0) * x(1,1) * x(2,1) + x(0,0) * x(1,0) * x(1,1) * x(3,1) + x(0,0) * x(1,0) * x(1,2) * x(2,2) + x(0,0) * x(1,0) * x(1,2) * x(3,2) - x(0,0) * x(1,0) * Math::sqr(x(2,1)) - x(0,0) * x(1,0) * Math::sqr(x(2,2)) - x(0,0) * x(1,0) * Math::sqr(x(3,1)) - x(0,0) * x(1,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(1,1)) * x(2,0) - x(0,0) * Math::sqr(x(1,1)) * x(3,0) + x(0,0) * x(1,1) * x(2,0) * x(2,1) + x(0,0) * x(1,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(1,2)) * x(2,0) - x(0,0) * Math::sqr(x(1,2)) * x(3,0) + x(0,0) * x(1,2) * x(2,0) * x(2,2) + x(0,0) * x(1,2) * x(3,0) * x(3,2) + x(0,0) * x(2,0) * x(2,1) * x(3,1) + x(0,0) * x(2,0) * x(2,2) * x(3,2) - x(0,0) * x(2,0) * Math::sqr(x(3,1)) - x(0,0) * x(2,0) * Math::sqr(x(3,2)) - x(0,0) * Math::sqr(x(2,1)) * x(3,0) + x(0,0) * x(2,1) * x(3,0) * x(3,1) - x(0,0) * Math::sqr(x(2,2)) * x(3,0) + x(0,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(1,0)) - Math::sqr(x(0,1)) * x(1,0) * x(2,0) - Math::sqr(x(0,1)) * x(1,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(1,2)) - Math::sqr(x(0,1)) * x(1,2) * x(2,2) - Math::sqr(x(0,1)) * x(1,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(2,0)) - Math::sqr(x(0,1)) * x(2,0) * x(3,0) + Math::sqr(x(0,1)) * Math::sqr(x(2,2)) - Math::sqr(x(0,1)) * x(2,2) * x(3,2) + Math::sqr(x(0,1)) * Math::sqr(x(3,0)) + Math::sqr(x(0,1)) * Math::sqr(x(3,2)) - DataType(2) * x(0,1) * x(0,2) * x(1,1) * x(1,2) + x(0,1) * x(0,2) * x(1,1) * x(2,2) + x(0,1) * x(0,2) * x(1,1) * x(3,2) + x(0,1) * x(0,2) * x(1,2) * x(2,1) + x(0,1) * x(0,2) * x(1,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(2,1) * x(2,2) + x(0,1) * x(0,2) * x(2,1) * x(3,2) + x(0,1) * x(0,2) * x(2,2) * x(3,1) - DataType(2) * x(0,1) * x(0,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(1,0)) * x(2,1) - x(0,1) * Math::sqr(x(1,0)) * x(3,1) + x(0,1) * x(1,0) * x(1,1) * x(2,0) + x(0,1) * x(1,0) * x(1,1) * x(3,0) + x(0,1) * x(1,0) * x(2,0) * x(2,1) + x(0,1) * x(1,0) * x(3,0) * x(3,1) + x(0,1) * x(1,1) * x(1,2) * x(2,2) + x(0,1) * x(1,1) * x(1,2) * x(3,2) - x(0,1) * x(1,1) * Math::sqr(x(2,0)) - x(0,1) * x(1,1) * Math::sqr(x(2,2)) - x(0,1) * x(1,1) * Math::sqr(x(3,0)) - x(0,1) * x(1,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(1,2)) * x(2,1) - x(0,1) * Math::sqr(x(1,2)) * x(3,1) + x(0,1) * x(1,2) * x(2,1) * x(2,2) + x(0,1) * x(1,2) * x(3,1) * x(3,2) - x(0,1) * Math::sqr(x(2,0)) * x(3,1) + x(0,1) * x(2,0) * x(2,1) * x(3,0) + x(0,1) * x(2,0) * x(3,0) * x(3,1) + x(0,1) * x(2,1) * x(2,2) * x(3,2) - x(0,1) * x(2,1) * Math::sqr(x(3,0)) - x(0,1) * x(2,1) * Math::sqr(x(3,2)) - x(0,1) * Math::sqr(x(2,2)) * x(3,1) + x(0,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(0,2)) * Math::sqr(x(1,0)) - Math::sqr(x(0,2)) * x(1,0) * x(2,0) - Math::sqr(x(0,2)) * x(1,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(1,1)) - Math::sqr(x(0,2)) * x(1,1) * x(2,1) - Math::sqr(x(0,2)) * x(1,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(2,0)) - Math::sqr(x(0,2)) * x(2,0) * x(3,0) + Math::sqr(x(0,2)) * Math::sqr(x(2,1)) - Math::sqr(x(0,2)) * x(2,1) * x(3,1) + Math::sqr(x(0,2)) * Math::sqr(x(3,0)) + Math::sqr(x(0,2)) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(1,0)) * x(2,2) - x(0,2) * Math::sqr(x(1,0)) * x(3,2) + x(0,2) * x(1,0) * x(1,2) * x(2,0) + x(0,2) * x(1,0) * x(1,2) * x(3,0) + x(0,2) * x(1,0) * x(2,0) * x(2,2) + x(0,2) * x(1,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(1,1)) * x(2,2) - x(0,2) * Math::sqr(x(1,1)) * x(3,2) + x(0,2) * x(1,1) * x(1,2) * x(2,1) + x(0,2) * x(1,1) * x(1,2) * x(3,1) + x(0,2) * x(1,1) * x(2,1) * x(2,2) + x(0,2) * x(1,1) * x(3,1) * x(3,2) - x(0,2) * x(1,2) * Math::sqr(x(2,0)) - x(0,2) * x(1,2) * Math::sqr(x(2,1)) - x(0,2) * x(1,2) * Math::sqr(x(3,0)) - x(0,2) * x(1,2) * Math::sqr(x(3,1)) - x(0,2) * Math::sqr(x(2,0)) * x(3,2) + x(0,2) * x(2,0) * x(2,2) * x(3,0) + x(0,2) * x(2,0) * x(3,0) * x(3,2) - x(0,2) * Math::sqr(x(2,1)) * x(3,2) + x(0,2) * x(2,1) * x(2,2) * x(3,1) + x(0,2) * x(2,1) * x(3,1) * x(3,2) - x(0,2) * x(2,2) * Math::sqr(x(3,0)) - x(0,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(2,1)) - Math::sqr(x(1,0)) * x(2,1) * x(3,1) + Math::sqr(x(1,0)) * Math::sqr(x(2,2)) - Math::sqr(x(1,0)) * x(2,2) * x(3,2) + Math::sqr(x(1,0)) * Math::sqr(x(3,1)) + Math::sqr(x(1,0)) * Math::sqr(x(3,2)) - DataType(2) * x(1,0) * x(1,1) * x(2,0) * x(2,1) + x(1,0) * x(1,1) * x(2,0) * x(3,1) + x(1,0) * x(1,1) * x(2,1) * x(3,0) - DataType(2) * x(1,0) * x(1,1) * x(3,0) * x(3,1) - DataType(2) * x(1,0) * x(1,2) * x(2,0) * x(2,2) + x(1,0) * x(1,2) * x(2,0) * x(3,2) + x(1,0) * x(1,2) * x(2,2) * x(3,0) - DataType(2) * x(1,0) * x(1,2) * x(3,0) * x(3,2) + x(1,0) * x(2,0) * x(2,1) * x(3,1) + x(1,0) * x(2,0) * x(2,2) * x(3,2) - x(1,0) * x(2,0) * Math::sqr(x(3,1)) - x(1,0) * x(2,0) * Math::sqr(x(3,2)) - x(1,0) * Math::sqr(x(2,1)) * x(3,0) + x(1,0) * x(2,1) * x(3,0) * x(3,1) - x(1,0) * Math::sqr(x(2,2)) * x(3,0) + x(1,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(2,0)) - Math::sqr(x(1,1)) * x(2,0) * x(3,0) + Math::sqr(x(1,1)) * Math::sqr(x(2,2)) - Math::sqr(x(1,1)) * x(2,2) * x(3,2) + Math::sqr(x(1,1)) * Math::sqr(x(3,0)) + Math::sqr(x(1,1)) * Math::sqr(x(3,2)) - DataType(2) * x(1,1) * x(1,2) * x(2,1) * x(2,2) + x(1,1) * x(1,2) * x(2,1) * x(3,2) + x(1,1) * x(1,2) * x(2,2) * x(3,1) - DataType(2) * x(1,1) * x(1,2) * x(3,1) * x(3,2) - x(1,1) * Math::sqr(x(2,0)) * x(3,1) + x(1,1) * x(2,0) * x(2,1) * x(3,0) + x(1,1) * x(2,0) * x(3,0) * x(3,1) + x(1,1) * x(2,1) * x(2,2) * x(3,2) - x(1,1) * x(2,1) * Math::sqr(x(3,0)) - x(1,1) * x(2,1) * Math::sqr(x(3,2)) - x(1,1) * Math::sqr(x(2,2)) * x(3,1) + x(1,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(1,2)) * Math::sqr(x(2,0)) - Math::sqr(x(1,2)) * x(2,0) * x(3,0) + Math::sqr(x(1,2)) * Math::sqr(x(2,1)) - Math::sqr(x(1,2)) * x(2,1) * x(3,1) + Math::sqr(x(1,2)) * Math::sqr(x(3,0)) + Math::sqr(x(1,2)) * Math::sqr(x(3,1)) - x(1,2) * Math::sqr(x(2,0)) * x(3,2) + x(1,2) * x(2,0) * x(2,2) * x(3,0) + x(1,2) * x(2,0) * x(3,0) * x(3,2) - x(1,2) * Math::sqr(x(2,1)) * x(3,2) + x(1,2) * x(2,1) * x(2,2) * x(3,1) + x(1,2) * x(2,1) * x(3,1) * x(3,2) - x(1,2) * x(2,2) * Math::sqr(x(3,0)) - x(1,2) * x(2,2) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,1)) + Math::sqr(x(2,0)) * Math::sqr(x(3,2)) - DataType(2) * x(2,0) * x(2,1) * x(3,0) * x(3,1) - DataType(2) * x(2,0) * x(2,2) * x(3,0) * x(3,2) + Math::sqr(x(2,1)) * Math::sqr(x(3,0)) + Math::sqr(x(2,1)) * Math::sqr(x(3,2)) - DataType(2) * x(2,1) * x(2,2) * x(3,1) * x(3,2) + Math::sqr(x(2,2)) * Math::sqr(x(3,0)) + Math::sqr(x(2,2)) * Math::sqr(x(3,1))) / (h*h*h*h) / (x(0,0) * x(1,1) * x(2,2) - x(0,0) * x(1,1) * x(3,2) - x(0,0) * x(1,2) * x(2,1) + x(0,0) * x(1,2) * x(3,1) + x(0,0) * x(2,1) * x(3,2) - x(0,0) * x(2,2) * x(3,1) - x(0,1) * x(1,0) * x(2,2) + x(0,1) * x(1,0) * x(3,2) + x(0,1) * x(1,2) * x(2,0) - x(0,1) * x(1,2) * x(3,0) - x(0,1) * x(2,0) * x(3,2) + x(0,1) * x(2,2) * x(3,0) + x(0,2) * x(1,0) * x(2,1) - x(0,2) * x(1,0) * x(3,1) - x(0,2) * x(1,1) * x(2,0) + x(0,2) * x(1,1) * x(3,0) + x(0,2) * x(2,0) * x(3,1) - x(0,2) * x(2,1) * x(3,0) - x(1,0) * x(2,1) * x(3,2) + x(1,0) * x(2,2) * x(3,1) + x(1,1) * x(2,0) * x(3,2) - x(1,1) * x(2,2) * x(3,0) - x(1,2) * x(2,0) * x(3,1) + x(1,2) * x(2,1) * x(3,0));

            }

      }; // class RumpfFunctionalUnrolled


    //#ifdef FEAT_EICKT
    //    extern template class RumpfFunctionalUnrolled<double,
    //    Trafo::Standard::Mapping<Geometry::ConformalMesh<Shape::Simplex<3>, 3, double>>>;
    //#endif
    /// \endcond
  } // namespace Meshopt
} // namespace FEAT
#endif // KERNEL_MESHOPT_RUMPF_FUNCTIONALS_2D_P1_UNROLLED_HPP
